//
//  TabBarView.swift
//  weibo
//
//  Created by 孙新 on 16/4/16.
//  Copyright © 2016年 孙新. All rights reserved.
//

import UIKit

class TabBarView: UITabBar {

    //定义加号按钮的点击闭包
    var composeButtonClickClosure : (()->())?
    
    
    //不调用私有属性的加号按钮 一直报错 
    
    override init(frame: CGRect) {
        //调用父类的init
        super.init(frame: frame)
        setUI()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setUI() 
    }
    
    private func setUI(){
        addSubview(composeButton)
    }
    
    
    //通过layoutSubViews布局tabbar的格局
    override func layoutSubviews() {
        super.layoutSubviews()
        
        
        //设置加号按钮的大小
        composeButton.center = CGPoint(x: self.frame.size.width * 0.5, y: self.frame.height * 0.5)
        //计算出每个按钮在tabbar上的宽度
        let itemW = self.frame.size.width / 5
        
        //设置一个变量 记录按钮的排序
        var index = 0
        for value in subviews {
            if value.isKindOfClass(NSClassFromString("UITabBarButton")!){
                //设置tabbar下item的宽度
                value.frame.size.width = itemW
                //value的X值
                value.frame.origin.x = CGFloat(index) * itemW
                index++
                if index == 2{
                    //先设置前两个按钮 然后空出一个按钮的位置留给加号按钮
                    index++
                }
            }
        }
    }
    
    //点击加号按钮的方法
    func didClickComposeButton(){
        print("点击了加号按钮")
        //加载一个控制器 显示对应的图像
        composeButtonClickClosure?()
        
    }
    
    //MARK - 懒加载加号按钮 将其设置为私有属性
    private lazy var composeButton:UIButton = {
        let button = UIButton()
        
        //添加加号按钮的点击方法
        button.addTarget(self, action: "didClickComposeButton", forControlEvents: UIControlEvents.TouchUpInside)
        
        
        //设置按钮不同状态下的图片
        button.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: UIControlState.Highlighted)
        button.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: UIControlState.Normal)
        
        
        //设置按钮不同状态下的背景图片
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: UIControlState.Highlighted)
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: UIControlState.Normal)
        //控件的大小与素材的原型保持一致
        button.sizeToFit()
        return button
    }()//一直保存原来时没有加括号 没有括号意味着懒加载没有执行

}
